package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.jdo.annotations.Index;
import javax.jdo.annotations.Unique;
import javax.persistence.Id;

import com.googlecode.objectify.annotation.Cached;
import com.googlecode.objectify.annotation.Unindexed;

@Cached
public class Domain implements Serializable {
	@Id private String domain = "";
	
	@Unindexed private String title = "";
	
	@Unindexed private String keywords = "";
	
	@Unindexed private String description = "";
	
	@Unindexed private String headers = "";
	
	@Unindexed private Date created = new Date();
	
	@Unindexed private Date updated = new Date();	
	
	@Unindexed private String googleAnalyticId = "";
	
	@Unindexed private String googleAdsenseId = "";
	
	@Unindexed private String googleAnalyticPropertyId = "";
	
	@Unindexed private int alexaRank = 0;
	
	@Unindexed private int googlePageRank = 0;
	
	@Unindexed private String whois = "";
	
	@Unindexed private String age = "";

	@Unindexed private String pageSize = "0";
	
	@Unindexed private String programmingLanguage = "";
	
	@Unindexed private String webServer = "";

	@Unindexed private String javascriptLibrary = "";
	
	@Unindexed private String ipAddress = "";
	
	@Unindexed private int validError = 0;
	
	@Unindexed private String strValidError = "";
	
	@Unindexed private int validWarnings = 0;
	
	@Unindexed private int dailyVisitor = 0;
	
	@Unindexed private List<String> outlink = new ArrayList<String>();
	
	@Unindexed private String countryVisitor = "";
	
	@Index private int status = 1; //-1:blacklist, 1: active
	
	@Unindexed private String heading = "";
	
	@Unindexed private String images = "";
	
	@Unindexed private double ratioTextHtml = 0;
	
	@Unindexed private String nameServers = "";
	
	@Unindexed private String soaRecord = "";
	
	@Unindexed private String dnsRecords = "";
	
	@Unindexed private String whoisIp = "";
	
	@Unindexed private boolean processing = false;
	
	@Unindexed private boolean exists = true;
	
	@Unindexed private String dailyRevenue = "";
	
	@Unindexed private String websiteWorth = "";
	
	@Unindexed private String seoScore = "";
	
	@Unindexed private List<String> themeColors = new ArrayList<String>();
	
	@Unindexed private String keywordsRankingAnalysis = "";
	
	@Unindexed private String themeColorAnalysis = "";
	
	@Unindexed private String similarWebsite = "";
	
	public String getDomain() {
		return domain;
	}

	public void setDomain(String domain) {
		this.domain = domain;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getKeywords() {
		return keywords;
	}

	public void setKeywords(String keywords) {
		this.keywords = keywords;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getHeaders() {
		return headers;
	}

	public void setHeaders(String headers) {
		this.headers = headers;
	}

	public Date getCreated() {
		return created;
	}

	public void setCreated(Date created) {
		this.created = created;
	}

	public Date getUpdated() {
		return updated;
	}

	public void setUpdated(Date updated) {
		this.updated = updated;
	}

	public String getGoogleAnalyticId() {
		return googleAnalyticId;
	}

	public void setGoogleAnalyticId(String googleAnalyticId) {
		this.googleAnalyticId = googleAnalyticId;
	}

	public String getGoogleAdsenseId() {
		return googleAdsenseId;
	}

	public void setGoogleAdsenseId(String googleAdsenseId) {
		this.googleAdsenseId = googleAdsenseId;
	}

	public String getGoogleAnalyticPropertyId() {
		return googleAnalyticPropertyId;
	}

	public void setGoogleAnalyticPropertyId(String googleAnalyticPropertyId) {
		this.googleAnalyticPropertyId = googleAnalyticPropertyId;
	}

	public int getAlexaRank() {
		return alexaRank;
	}

	public void setAlexaRank(int alexaRank) {
		this.alexaRank = alexaRank;
	}

	public int getGooglePageRank() {
		return googlePageRank;
	}

	public void setGooglePageRank(int googlePageRank) {
		this.googlePageRank = googlePageRank;
	}

	public String getWhois() {
		return whois;
	}

	public void setWhois(String whois) {
		this.whois = whois;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getPageSize() {
		return pageSize;
	}

	public void setPageSize(String pageSize) {
		this.pageSize = pageSize;
	}

	public String getProgrammingLanguage() {
		return programmingLanguage;
	}

	public void setProgrammingLanguage(String programmingLanguage) {
		this.programmingLanguage = programmingLanguage;
	}

	public String getWebServer() {
		return webServer;
	}

	public void setWebServer(String webServer) {
		this.webServer = webServer;
	}
	
	public String getJavascriptLibrary() {
		return javascriptLibrary;
	}

	public void setJavascriptLibrary(String javascriptLibrary) {
		this.javascriptLibrary = javascriptLibrary;
	}

	public String getIpAddress() {
		return ipAddress;
	}

	public void setIpAddress(String ipAddress) {
		this.ipAddress = ipAddress;
	}

	public int getValidError() {
		return validError;
	}

	public void setValidError(int validError) {
		this.validError = validError;
	}

	public int getValidWarnings() {
		return validWarnings;
	}

	public void setValidWarnings(int validWarnings) {
		this.validWarnings = validWarnings;
	}

	public String getStrValidError() {
		return strValidError;
	}

	public void setStrValidError(String strValidError) {
		this.strValidError = strValidError;
	}

	public int getDailyVisitor() {
		return dailyVisitor;
	}

	public void setDailyVisitor(int dailyVisitor) {
		this.dailyVisitor = dailyVisitor;
	}

	public List<String> getOutlink() {
		return outlink;
	}

	public void setOutlink(List<String> outlink) {
		this.outlink = outlink;
	}

	public String getCountryVisitor() {
		return countryVisitor;
	}

	public void setCountryVisitor(String countryVisitor) {
		this.countryVisitor = countryVisitor;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}
	
	public String getHeading() {
		return heading;
	}

	public void setHeading(String heading) {
		this.heading = heading;
	}

	public String getImages() {
		return images;
	}

	public void setImages(String images) {
		this.images = images;
	}

	public double getRatioTextHtml() {
		return ratioTextHtml;
	}

	public void setRatioTextHtml(double ratioTextHtml) {
		this.ratioTextHtml = ratioTextHtml;
	}

	public String getNameServers() {
		return nameServers;
	}

	public void setNameServers(String nameServers) {
		this.nameServers = nameServers;
	}

	public String getSoaRecord() {
		return soaRecord;
	}

	public void setSoaRecord(String soaRecord) {
		this.soaRecord = soaRecord;
	}

	public String getDnsRecords() {
		return dnsRecords;
	}

	public void setDnsRecords(String dnsRecords) {
		this.dnsRecords = dnsRecords;
	}

	public String getWhoisIp() {
		return whoisIp;
	}

	public void setWhoisIp(String whoisIp) {
		this.whoisIp = whoisIp;
	}

	public boolean isProcessing() {
		return processing;
	}

	public void setProcessing(boolean processing) {
		this.processing = processing;
	}

	public boolean isExists() {
		return exists;
	}

	public void setExists(boolean exists) {
		this.exists = exists;
	}

	public String getDailyRevenue() {
		return dailyRevenue;
	}

	public void setDailyRevenue(String dailyRevenue) {
		this.dailyRevenue = dailyRevenue;
	}

	public String getWebsiteWorth() {
		return websiteWorth;
	}

	public void setWebsiteWorth(String websiteWorth) {
		this.websiteWorth = websiteWorth;
	}

	public String getSeoScore() {
		return seoScore;
	}

	public void setSeoScore(String seoScore) {
		this.seoScore = seoScore;
	}

	public List<String> getThemeColors() {
		return themeColors;
	}

	public void setThemeColors(List<String> themeColors) {
		this.themeColors = themeColors;
	}

	public String getKeywordsRankingAnalysis() {
		return keywordsRankingAnalysis;
	}

	public void setKeywordsRankingAnalysis(String keywordsRankingAnalysis) {
		this.keywordsRankingAnalysis = keywordsRankingAnalysis;
	}

	public String getThemeColorAnalysis() {
		return themeColorAnalysis;
	}

	public void setThemeColorAnalysis(String themeColorAnalysis) {
		this.themeColorAnalysis = themeColorAnalysis;
	}

	public String getSimilarWebsite() {
		return similarWebsite;
	}

	public void setSimilarWebsite(String similarWebsite) {
		this.similarWebsite = similarWebsite;
	}

	@Override
    public String toString() {
        return this.domain;
    }
}
